<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

require_once 'File/Bittorrent2/Decode.php';
require_once 'File/Bittorrent2/Encode.php';

/**
 * Помошник для работы с torrent файлами
 * 
 * @package CoreFramework
 * @version 1.0
 * @author Gennadiy Kozlenko
 */

/**
 * Получение информации о сидерах/личерах
 *
 * @param string $content
 * @return array
 */
function torrent_info($content) {
   $obj =& get_instance();
   $obj->load->helper('http');
   // Собираемая инфа
   $info = array(
      'seed'  => 0,
      'leech' => 0
   );
   $data = torrent_decode($content);
   if (!empty($data)) {
      print_r($data);
      /*
      foreach ($trackers as $tracker) {
         try {
            // Строим урл для получения информации
            $packed_hash = pack('H*', $torrent->getInfoHash());
            $scrape_url = preg_replace('/\/announce$/', '/scrape', $tracker) . '?info_hash=' . urlencode($packed_hash);
            $scrape_data = get_http_content($scrape_url, array());
            $stats = torrent_decode($scrape_data);
            print_r($stats);
            break;
         } catch (File_Bittorrent2_Exception $e) {
            // 
         }
      }
      */
   }
   return $info;
}

/**
 * Декодирование torrent файла
 *
 * @param string $content
 * @return array
 */
function torrent_decode($content) {
   $data = array();
   $torrent = new File_Bittorrent2_Decode();
   try {
      $data = $torrent->decode($content);
   } catch (File_Bittorrent2_Exception $e) {
      //
   }
   return $data;
}

/**
 * Кодирование torrent файла
 *
 * @param array $data
 * @return string
 */
function torrent_encode($data) {
   $content = '';
   $torrent = new File_Bittorrent2_Encode();
   try {
      $content = $torrent->encode_array($data);
   } catch (File_Bittorrent2_Exception $e) {
      //
   }
   return $content;
}

/**
 * Получение информации по торренту
 * 
 * @param string $file
 * @return array
 */
function torrent_stats($file) {
   $stats = array();
   $torrent = new File_Bittorrent2_Decode();
   try {
      $torrent->decodeFile($file);
      $stats = $torrent->getStats();
   } catch (File_Bittorrent2_Exception $e) {
      //
   }
   return $stats;
}
